package org.learn.leetcode;
//给定一个非空整数数组，除了某个元素只出现一次以外，
//        其余每个元素均出现两次。找出那个只出现了一次的元素。
public class AppearOnce {
    //思路
//    交换律：a ^ b ^ c <=> a ^ c ^ b
//
//    任何数于0异或为任何数 0 ^ n => n
//
//    相同的数异或为0: n ^ n => 0，a^= 同一个数两次就等于a它本身

    //只出现一次的数字
    public int singleNumber(int[] nums) {
        int ans = nums[0];
        for (int i = 1; i < nums.length; ++i) {
            ans ^= nums[i];
        }
        return ans;
    }
}
